package com.cleaningcloud.erp.service;

import java.util.List;
import com.cleaningcloud.erp.api.domain.ErpCustomer;
import com.cleaningcloud.erp.domain.excelExport.CustomerExport;
import org.springframework.transaction.annotation.Transactional;

/**
 * 客户管理Service接口
 * 
 * @author cleaningcloud
 * @date 2024-10-02
 */
public interface IErpCustomerService 
{
    /**
     * 查询客户管理
     * 
     * @param customerId 客户管理主键
     * @return 客户管理
     */
    ErpCustomer selectErpCustomerByCustomerId(Long customerId);

    /**
     * 查询客户管理列表
     * 
     * @param erpCustomer 客户管理
     * @return 客户管理集合
     */
    List<ErpCustomer> selectErpCustomerList(ErpCustomer erpCustomer);

    /**
     * 列表查询
     * @return
     */
    List<ErpCustomer> getErpCustomerList();

    /**
     * 新增客户管理
     * 
     * @param erpCustomer 客户管理
     * @return 结果
     */
    int insertErpCustomer(ErpCustomer erpCustomer);

    /**
     * 修改客户管理
     * 
     * @param erpCustomer 客户管理
     * @return 结果
     */
    int updateErpCustomer(ErpCustomer erpCustomer);

    /**
     * 批量删除客户管理
     * 
     * @param customerIds 需要删除的客户管理主键集合
     * @return 结果
     */
    int deleteErpCustomerByCustomerIds(Long[] customerIds);

    /**
     * 删除客户管理信息
     * 
     * @param customerId 客户管理主键
     * @return 结果
     */
    int deleteErpCustomerByCustomerId(Long customerId);

    /**
     * 导出客户管理列表
     *
     * @param CustomerExport 客户导出
     * @return 客户管理集合
     */
    List<CustomerExport> exportErpCustomerList(CustomerExport customerExport);

    /**
     * @Author Shaw
     * @Description 注册客户信息
     * @date: 2025-04-02 11:10
     * @param: //TODO
     */
    boolean registerCustomer(ErpCustomer erpCustomer);

    /**
     * @Author Shaw
     * @Description 校验手机号码(用户账号)是否唯一
     * @date: 2025-04-01 16:36
     * @param: //TODO
     */
    boolean checkUserNameUnique(ErpCustomer erpCustomer);

    /**
     * @Author Shaw
     * @Description 根据用户账号获取客户信息
     * @date: 2025-04-01 16:36
     * @param: //TODO
     */
    ErpCustomer getCustomerInfoByUserName(String userName);

    /**
     * @Author Shaw
     * @Description 审核客户
     * @date: 2025-04-02 16:24
     * @param: //TODO
     */
    int auditErpCustomer(ErpCustomer erpCustomer);
}
